home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-20 | 1.3 KB | 66 lines | [TEXT/PJMM] |
- unit MyTrackIdle;
-
- { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
-
- interface
-
- function IdleSince: longInt; {TickCount at last no idle time}
- procedure InitTrackIdle;
- procedure FinishTrackIdle;
- procedure TrackIdle;
-
- implementation
-
- type
- keyLongMap = array[1..4] of longInt;
-
- var
- lastmoved: longInt; { Last time the cursor was moved, used for idle timing }
- lastpos: point;
- lastkeymap: keyLongMap;
-
- function IdleSince: longInt; {TickCount at last no idle time}
- begin
- IdleSince := lastmoved;
- end;
-
- procedure MyGetMouse (var pt: point); { Handles not having quickdraw around }
- var
- event: eventRecord;
- dummy: boolean;
- begin
- dummy := OSEventAvail(0, event);
- pt := event.where;
- end;
-
- procedure TrackIdle;
- var
- pt: point;
- km: keyLongMap;
- begin
- pt := lastpos;
- MyGetMouse(lastpos);
- if (abs(pt.h - lastpos.h) > 2) or (abs(pt.v - lastpos.v) > 2) then begin
- lastmoved := TickCount;
- end
- else begin
- GetKeys(keyMap(km));
- if (km[1] <> lastkeymap[1]) or (km[2] <> lastkeymap[2]) or (km[3] <> lastkeymap[3]) or (km[4] <> lastkeymap[4]) then begin
- lastmoved := TickCount;
- lastkeymap := km;
- end;
- end;
- end;
-
- procedure InitTrackIdle;
- begin
- MyGetMouse(lastpos);
- lastmoved := TickCount;
- GetKeys(keyMap(lastkeymap));
- end;
-
- procedure FinishTrackIdle;
- begin
- end;
-
- end.